Computer applications are made up of one or more software packages. Packages may be dependent on other packages and require that specific pieces of data be defined before they work properly. For example, one can install a software package that enables remote file access, but network information such as a DNS server address is needed for the package to work properly. Sometimes this information is already associated with other packages that are already installed or that a package is dependent on. Other times, the user requesting the package be installed must be prompted for the information.
Conventionally, a package manager is a collection of software tools that automates the process of installing, upgrading, configuring, and removing software packages from a system in a consistent manner. The package manager maintains a database of software dependencies and version information to prevent software mismatches and missing prerequisites. The package manager may also act as an intermediary between external repositories, not necessarily storing source or binary data, but knowing where that data resides. It also maintains a data structure capturing relationships between versions of packages and the current operating environment. For example, running on Ubuntu 14.04 and requesting the install of a package by name but not version, the package manager will be able to determine what version of a package needs to be installed if any is available that matches that name, any required dependencies needed before that package can be installed, and any information needed during the install process associated with that package.
A hyper-convergent appliance is a device that consists of one or more computer nodes running one or more workloads to control the hyper-convergent appliance. For example, a Linux Container™ (LXC™) is a workload that has operating system-level capabilities which make it possible to run multiple isolated Linux™ systems or containers, on one control host (the LXC™ host). LXC™ serves as a lightweight alternative to full machine virtualization via hypervisors like KVM™, VMware's ESXi™ or Xen™. When installing software packages on a hyper-convergent appliance, knowledge is needed regarding the computer nodes and the virtual machines running on the computer nodes. However, conventional package managers do not interact with operating environments external to the computer nodes. Additionally, all conventional package managers can only access knowledge from installed files or previously installed packages. Thus, limitations exist with regard to conventional package managers.
The figures are provided in order to provide a thorough understanding of the present invention. The figures should not be construed as limiting the breath of the invention in any manner.